/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dao;

import com.interfaces.IMensaje;
import com.modelo.Mensaje;
import com.modelo.Usuario;
import java.util.List;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 *
 * @author Seysame
 */
public class MensajeDAO extends HibernateDaoSupport implements IMensaje {

    
    //by Alejandra
    //Inicio Alejandra
    @Override
    public List<Mensaje> consultarMensajesPorUsuario(Usuario usu) {
         
        Query query = this.getSession().createQuery("from Mensaje where id_usuario = :usu ");
         query.setParameter("usu", usu.getIdUsuario());
         List<Mensaje> listado = query.list();
         return listado;
    }

    //fin
    @Override
    public List<Mensaje> listarMensajes() {
  return this.getHibernateTemplate().find("from Mensaje");
    }

    @Override
    public Mensaje buscarMensaje(Mensaje mensaje) {
     Query query = this.getSession().createQuery("from Mensaje where id_mensaje = :id ");
     query.setParameter("id",mensaje.getIdMensaje());
     List<Mensaje>listado = query.list();
     if(listado.isEmpty()){
     return null;
     }else{
     return listado.get(0);
     }
    
    }

    @Override
    public Mensaje registrarMensaje(Mensaje mensaje) {
        this.getHibernateTemplate().saveOrUpdate(mensaje);
       return mensaje;
    
    }

    @Override
    public Mensaje modificarMensaje(Mensaje mensaje) {
        this.getHibernateTemplate().saveOrUpdate(mensaje);
       return mensaje;
    }

    @Override
    public List<Mensaje> listarMensajesPorDestinatario(Usuario destinatario) {
     Query query = this.getSession().createQuery("from Mensaje where id_usuario = :id ");
     query.setParameter("id",destinatario.getIdUsuario());
     List<Mensaje>listado = query.list();
     return listado;
    
    
    }

    @Override
    public List<Mensaje> listarMensajesPorRemitente(Usuario remitente) {
     Query query = this.getSession().createQuery("from Mensaje where id_usuario1 = :id ");
     query.setParameter("id",remitente.getIdUsuario());
     List<Mensaje>listado = query.list();
     return listado;
    
    }
    
}
